runescape-client: Added Animation runelite api file. Also renamed "skin" to "skeleton". (#2867)
* rename getSkin rsapi to getSkeleton * Added animation runelite api. Also re-named method "getSkin" to "getSkeleton", because it is a more suitable description. * re-named "skin" variable to "skeleton" * added frames.java to runelite api * added DualNode.java to runelite api * made RSSkeleton extend Skeleton * . * removed unused imports * checkstyle corrections * put copyright notice back which i accidentally deleted. * Added some descriptions * removed type in description * . * added licence headers
This commit is contained in:
59
runelite-api/src/main/java/net/runelite/api/Animation.java
Normal file
59
runelite-api/src/main/java/net/runelite/api/Animation.java
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (c) 2020, Noodleeater <noodleeater4@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.api;
|
||||
|
||||
/**
|
||||
* Represents a frame of animation data. Each animation frame will have its own animation animation data.
|
||||
*/
|
||||
public interface Animation
|
||||
{
|
||||
Skeleton getSkeleton();
|
||||
|
||||
/**
|
||||
* the number of transformations the animation frame has.
|
||||
*/
|
||||
int getTransformCount();
|
||||
|
||||
/**
|
||||
* this variable name is incorrect. it is an array of bone ids. not transform types.
|
||||
* this array has a one to one relationship with the arrays of translator values in the animation frame(TranslatorX getTranslatorY TranslatorZ).
|
||||
* it is the array of bone ids which point each translator value to the bone it should be transforming.
|
||||
*/
|
||||
int[] getTransformTypes();
|
||||
|
||||
/**
|
||||
* these are x, y, and z values, which tell the transform function how much to transform the each bone.
|
||||
*/
|
||||
int[] getTranslatorX();
|
||||
|
||||
int[] getTranslatorY();
|
||||
|
||||
int[] getTranslatorZ();
|
||||
|
||||
/**
|
||||
* whether this Animation frame has any alpha/transparency animation.
|
||||
*/
|
||||
boolean isShowing();
|
||||
}
|
||||
30
runelite-api/src/main/java/net/runelite/api/DualNode.java
Normal file
30
runelite-api/src/main/java/net/runelite/api/DualNode.java
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright (c) 2020, Noodleeater <noodleeater4@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.api;
|
||||
|
||||
public interface DualNode extends Node
|
||||
{
|
||||
void unlinkDual();
|
||||
}
|
||||
33
runelite-api/src/main/java/net/runelite/api/Frames.java
Normal file
33
runelite-api/src/main/java/net/runelite/api/Frames.java
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2020, Noodleeater <noodleeater4@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.api;
|
||||
|
||||
public interface Frames extends DualNode
|
||||
{
|
||||
/**
|
||||
* Use this for getting a specific animation frame from the cache
|
||||
*/
|
||||
Animation[] getFrames();
|
||||
}
|
||||
54
runelite-api/src/main/java/net/runelite/api/Skeleton.java
Normal file
54
runelite-api/src/main/java/net/runelite/api/Skeleton.java
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (c) 2020, Noodleeater <noodleeater4@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.api;
|
||||
|
||||
/**
|
||||
* Represents a Skeleton.
|
||||
* When calculating a model's pose in a animation frame, the skeleton is used to link vertices to animation values.
|
||||
*/
|
||||
public interface Skeleton extends Node
|
||||
{
|
||||
/**
|
||||
* the number of bones in the Skeleton
|
||||
*/
|
||||
int getCount();
|
||||
|
||||
/**
|
||||
* the transform type of each bone
|
||||
* The possible transform types are as follows:
|
||||
* 0 (set pivot point)
|
||||
* 1 (translate/move)
|
||||
* 2 (rotate)
|
||||
* 3 (scale)
|
||||
* 5 (alpha/transparency)
|
||||
*/
|
||||
int[] getTypes();
|
||||
|
||||
/**
|
||||
* Each bone is linked to a list of vertex skins. [bone id][list of vertex skins]
|
||||
* if a vertex's skin is linked to a bone, the vertex can be transformed by that bone.
|
||||
*/
|
||||
int[][] getList();
|
||||
}
|
||||
@@ -204,12 +204,12 @@ public abstract class RSModelMixin implements RSModel
|
||||
if (frameId != -1)
|
||||
{
|
||||
RSAnimation frame = frames.getFrames()[frameId];
|
||||
RSSkeleton skin = frame.getSkin();
|
||||
RSSkeleton skeleton = frame.getSkeleton();
|
||||
RSAnimation nextFrame = null;
|
||||
if (nextFrames != null)
|
||||
{
|
||||
nextFrame = nextFrames.getFrames()[nextFrameId];
|
||||
if (nextFrame.getSkin() != skin)
|
||||
if (nextFrame.getSkeleton() != skeleton)
|
||||
{
|
||||
nextFrame = null;
|
||||
}
|
||||
@@ -219,7 +219,7 @@ public abstract class RSModelMixin implements RSModel
|
||||
client.setAnimOffsetY(0);
|
||||
client.setAnimOffsetZ(0);
|
||||
|
||||
interpolateFrames(skin, frame, nextFrame, interval, intervalCount);
|
||||
interpolateFrames(skeleton, frame, nextFrame, interval, intervalCount);
|
||||
resetBounds();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,14 @@
|
||||
*/
|
||||
package net.runelite.rs.api;
|
||||
|
||||
import net.runelite.api.Animation;
|
||||
import net.runelite.api.Frames;
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSAnimation
|
||||
public interface RSAnimation extends Frames, Animation
|
||||
{
|
||||
@Import("skeleton")
|
||||
RSSkeleton getSkin();
|
||||
RSSkeleton getSkeleton();
|
||||
|
||||
@Import("transformCount")
|
||||
int getTransformCount();
|
||||
|
||||
@@ -24,9 +24,10 @@
|
||||
*/
|
||||
package net.runelite.rs.api;
|
||||
|
||||
import net.runelite.api.DualNode;
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSDualNode extends RSNode
|
||||
public interface RSDualNode extends RSNode, DualNode
|
||||
{
|
||||
@Import("removeDual")
|
||||
void unlinkDual();
|
||||
|
||||
@@ -24,9 +24,10 @@
|
||||
*/
|
||||
package net.runelite.rs.api;
|
||||
|
||||
import net.runelite.api.Frames;
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSFrames extends RSDualNode
|
||||
public interface RSFrames extends RSDualNode, Frames
|
||||
{
|
||||
@Import("frames")
|
||||
RSAnimation[] getFrames();
|
||||
|
||||
@@ -24,9 +24,10 @@
|
||||
*/
|
||||
package net.runelite.rs.api;
|
||||
|
||||
import net.runelite.api.Skeleton;
|
||||
import net.runelite.mapping.Import;
|
||||
|
||||
public interface RSSkeleton extends RSNode
|
||||
public interface RSSkeleton extends RSNode, Skeleton
|
||||
{
|
||||
@Import("count")
|
||||
int getCount();
|
||||
|
||||
Reference in New Issue
Block a user